home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Applications 1996 May / SGI IRIX 6.2 Applications 1996 May.iso / dist / impr_dev.idb / usr / impressario / src / libspool / spoolI.h.z / spoolI.h
C/C++ Source or Header  |  1996-05-06  |  8KB  |  273 lines

  1. /**************************************************************************
  2.  *                                      *
  3.  *           Copyright (c)    1991 Silicon Graphics, Inc.          *
  4.  *            All Rights Reserved                    *
  5.  *                                      *
  6.  *       THIS    IS UNPUBLISHED PROPRIETARY SOURCE CODE OF SGI          *
  7.  *                                      *
  8.  * The copyright notice above does not evidence any actual of intended      *
  9.  * publication of such source code, and is an unpublished work by Silicon *
  10.  * Graphics, Inc. This material contains CONFIDENTIAL INFORMATION that is *
  11.  * the property of Silicon Graphics, Inc. Any use, duplication or      *
  12.  * disclosure not specifically authorized by Silicon Graphics is strictly *
  13.  * prohibited.                                  *
  14.  *                                      *
  15.  * RESTRICTED RIGHTS LEGEND:                          *
  16.  *                                      *
  17.  * Use, duplication or disclosure by the Government is subject to      *
  18.  * restrictions as set forth in subdivision (c)(1)(ii) of the Rights in      *
  19.  * Technical Data and Computer Software clause at DFARS 52.227-7013,      *
  20.  * and/or in similar or successor clauses in the FAR, DOD or NASA FAR      *
  21.  * Supplement. Unpublished - rights reserved under the Copyright Laws of  *
  22.  * the United States. Contractor is SILICON GRAPHICS, INC., 2011 N.      *
  23.  * Shoreline Blvd., Mountain View, CA 94039-7311              *
  24.  **************************************************************************
  25.  *
  26.  * File: spoolI.h
  27.  *
  28.  * Description: Internal include file for the libspool, spooling system API
  29.  *    library. This file contains information of use internally by the
  30.  *    files that comprise libspool. This file is not intended to be
  31.  *    included in any user level application program.
  32.  *
  33.  **************************************************************************/
  34.  
  35.  
  36. #ident "$Revision: 1.7 $"
  37.  
  38.  
  39. #ifndef    _SL_SPOOLI_H
  40. #define    _SL_SPOOLI_H
  41.  
  42.  
  43. #include "msgs/uxsgiimpr.h"    /* i18n support */
  44. #include "spool.h"
  45.  
  46.  
  47. /* Commands */
  48.  
  49. #define SL_CMD_SH_NAME        "sh"
  50. #define SL_CMD_ECHO_NAME    "echo"
  51. #define SL_CMD_LPR_NAME        "lpr"
  52. #define SL_CMD_LPRM_NAME    "lprm"
  53. #define SL_CMD_LPQ_NAME        "lpq"
  54. #ifdef sgi
  55. #define SL_CMD_SH        "/bin/sh"
  56. #define SL_CMD_ECHO        "/bin/echo"
  57. #define SL_CMD_LPR        "/usr/bsd/lpr"
  58. #define SL_CMD_LPRM        "/usr/bsd/lprm"
  59. #define SL_CMD_LPQ        "/usr/bsd/lpq"
  60. #else
  61. #define SL_CMD_SH        "/usr/bin/sh"
  62. #define SL_CMD_ECHO        "/usr/bin/echo"
  63. #define SL_CMD_LPR        "/usr/ucb/lpr"
  64. #define SL_CMD_LPRM        "/usr/ucb/lprm"
  65. #define SL_CMD_LPQ        "/usr/ucb/lpq"
  66. #endif
  67. #define SL_CMD_RSH_NAME        "rsh"
  68. #define SL_CMD_RSH        "/usr/bsd/rsh"
  69. #define SL_CMD_LPC_NAME        "lpc"
  70. #define SL_CMD_LPC        "/usr/etc/lpc"
  71. #define SL_CMD_LP_NAME        "lp"
  72. #define SL_CMD_LP        "/usr/bin/lp"
  73. #define SL_CMD_CANCEL_NAME    "cancel"
  74. #define SL_CMD_CANCEL        "/usr/bin/cancel"
  75. #define SL_CMD_ENABLE_NAME    "enable"
  76. #define SL_CMD_ENABLE        "/usr/bin/enable"
  77. #define SL_CMD_DISABLE_NAME    "disable"
  78. #define SL_CMD_DISABLE        "/usr/bin/disable"
  79. #define SL_CMD_ACCEPT_NAME    "accept"
  80. #define SL_CMD_ACCEPT        "/usr/lib/accept"
  81. #define SL_CMD_REJECT_NAME    "reject"
  82. #define SL_CMD_REJECT        "/usr/lib/reject"
  83. #define SL_CMD_LPSTAT_NAME    "lpstat"
  84. #define SL_CMD_LPSTAT        "/usr/bin/lpstat"
  85.  
  86. #define SL_CMD_SH_FLAG    "-c"
  87.  
  88. #define SL_SH_REDIRECT    "2>&1"
  89.  
  90.  
  91. /* Message formatting */
  92.  
  93. #define SL_LANG        "LANG=C"
  94. #define SL_MSGFORMAT    "MSGVERB=label:text:action"
  95.  
  96.  
  97. /* Spooler specific files and info */
  98.  
  99. #define SL_LP_DIR    "/var/spool/lp"
  100. #define SL_LP_LOCK    "/var/spool/lp/SCHEDLOCK"
  101. #ifdef sgi
  102. #define SL_LPD_LOCK    "/var/spool/lpd/lpd.lock"
  103. #else
  104. #define SL_LPD_LOCK    "/var/spool/lpd.lock"
  105. #endif
  106.  
  107.  
  108. /* Misc info */
  109.  
  110. #define SL_BUFSIZ    8192
  111. #define SL_SML_BUFSIZ    1024
  112. #define SL_BUF_PRINTCAP    1025
  113.  
  114. #define SL_TRUE        1
  115. #define SL_FALSE    0
  116.  
  117.  
  118. /* Needed because Sun's strdup prototype declares its argument char*
  119.    instead of const char* */
  120. #ifdef sgi
  121. #define SL_CHAR_CAST       
  122. #else
  123. #define SL_CHAR_CAST       (char*)
  124. #endif
  125.  
  126.  
  127. /* Misc macros */
  128.  
  129. #define RETURN_ERROR(err_code)    { \
  130.                 SLerrno = (err_code); \
  131.                 return SL_ERROR; \
  132.                 }
  133.  
  134. #define RETURN_ERROR_PTR(err_code)    { \
  135.                 SLerrno = (err_code); \
  136.                 return NULL; \
  137.                 }
  138.  
  139. #define CHECK_DEF_SPOOLER    if (!def_spooler) { \
  140.                     uint sp, avail; \
  141.                     if (SLGetSpooler(&sp, &avail) < 0) { \
  142.                         return SL_ERROR; \
  143.                     } \
  144.                     if (!sp) \
  145.                     RETURN_ERROR(SL_ERR_NO_SPOOLERS); \
  146.                 }
  147.  
  148. #define CHECK_DEF_SPOOLER_PTR    if (!def_spooler) { \
  149.                     uint sp, avail; \
  150.                     if (SLGetSpooler(&sp, &avail) < 0) { \
  151.                         return NULL; \
  152.                     } \
  153.                     if (!sp) \
  154.                     RETURN_ERROR_PTR(SL_ERR_NO_SPOOLERS); \
  155.                 }
  156.  
  157.  
  158. /* Job submittal source types and structures */
  159.  
  160. #define SL_JOB_FILENAME        1
  161. #define SL_JOB_FD        2
  162. #define SL_JOB_BUF        3
  163.  
  164. typedef struct {
  165.     int type;
  166.     const char *filename;
  167. } SLFilenameJobSourceStruct;
  168.  
  169. typedef struct {
  170.     int type;
  171.     int file_desc;
  172. } SLFdJobSourceStruct;
  173.  
  174. typedef struct {
  175.     int type;
  176.     const void *buffer;
  177.     size_t amount;
  178. } SLBufJobSourceStruct;
  179.  
  180.  
  181. typedef union {
  182.     int type;
  183.     SLFilenameJobSourceStruct filename_job;
  184.     SLFdJobSourceStruct fd_job;
  185.     SLBufJobSourceStruct buf_job;
  186. } SLJobSourceUnion;
  187.  
  188.  
  189. /* Spooler info structure */
  190.  
  191. typedef struct {
  192.     unsigned int mask;
  193.     int (*find_spooler_func)(void);
  194.     int (*get_printers_func)(SLPrinterStruct**, int*);
  195.     int (*get_printer_info_func)(const char*, SLPrinterStruct**);
  196.     int (*get_def_printer_func)(char**);
  197.     int (*get_printer_settings_func)(const char*, SLSettingsStruct**);
  198.     int (*submit_job_func)(SLJobSourceUnion*, const char*, int, int, int,
  199.                         const char*, const char*,
  200.                         char**);
  201.     int (*cancel_job_func)(const char*, const char*);
  202.     int (*get_spooler_state_func)(const char*, int, int*);
  203.     int (*set_spooler_state_func)(const char*, int, int);
  204.     int (*get_queue_func)(const SLPrinterStruct*, int, SLQueueStruct**, int*);
  205. #ifdef _SL_FASTPATH
  206.     int (*supports_fast_job)(const char *);
  207. #endif /* _SL_FASTPATH */
  208.     char* (*find_username)(void);
  209. } SLSpoolerStruct;
  210.  
  211.  
  212. /* Internal globals */
  213.  
  214. extern char **_SLspooler_out_buf;
  215. extern int _SLspooler_nout;
  216. extern int _SLspooler_exit;
  217.  
  218.  
  219. /* Internal function declarations */
  220.  
  221. #ifdef __cplusplus
  222. extern "C" {
  223. #endif
  224. extern int    _SLIsEmpty(const char*);
  225. extern int    _SLBsdFindSpooler(void);
  226. extern int    _SLSysVFindSpooler(void);
  227. extern int    _SLBsdGetPrinterList(SLPrinterStruct**, int*);
  228. extern int    _SLSysVGetPrinterList(SLPrinterStruct**, int*);
  229. extern int    _SLBsdGetPrinterInfo(const char*, SLPrinterStruct**);
  230. extern int    _SLSysVGetPrinterInfo(const char*, SLPrinterStruct**);
  231. extern int    _SLBsdGetDefPrinterName(char**);
  232. extern int    _SLSysVGetDefPrinterName(char**);
  233. extern char*    _SLSkipSpace(char*);
  234. extern void    _SLInitPlist(SLPrinterStruct**, int*);
  235. extern void    _SLInitPentry(SLPrinterStruct*);
  236. extern void    _SLAddPrinter(const SLPrinterStruct*, SLPrinterStruct**, int*);
  237. extern SLQueueStruct*    _SLAddQueue(SLQueueStruct**, int*);
  238. extern void    _SLInitQueue(SLQueueStruct**, int*);
  239. extern void    _SLFreeQueueEntry(SLQueueStruct*);
  240. extern int    _SLSysVSubmitJob(SLJobSourceUnion*, const char*, int, int, int,
  241.                     const char*, const char*, char**);
  242. extern int    _SLBsdSubmitJob(SLJobSourceUnion*, const char*, int, int, int,
  243.                     const char*, const char*, char**);
  244. extern int    _SLExec(SLJobSourceUnion*, char*, int, int*);
  245. extern int    _SLSysVCancelJob(const char*, const char*);
  246. extern int    _SLBsdCancelJob(const char*, const char*);
  247. extern int    _SLSysVGetSpoolerState(const char*, int, int*);
  248. extern int    _SLSysVSetSpoolerState(const char*, int, int);
  249. extern int    _SLBsdGetSpoolerState(const char*, int, int*);
  250. extern int    _SLBsdSetSpoolerState(const char*, int, int);
  251. extern int    _SLSysVGetQueue(const SLPrinterStruct*, int,
  252.                     SLQueueStruct**, int*);
  253. extern int    _SLBsdGetQueue(const SLPrinterStruct*, int,
  254.                     SLQueueStruct**, int*);
  255. extern int    _SLSysVGetPrinterSettings(const char*, SLSettingsStruct**);
  256. extern int    _SLSysVGetSpoolerOptions(SLSysVSpoolerOptionsStruct**);
  257. extern int    _SLSysVGetPrinterOptions(const char*, char**);
  258. extern int    _SLSysVSaveSpoolerOptions(SLSysVSpoolerOptionsStruct*);
  259. extern int    _SLSysVSavePrinterOptions(const char*, char*, int);
  260. extern int    _SLBsdGetPrinterSettings(const char*, SLSettingsStruct**);
  261. #ifdef _SL_FASTPATH
  262. extern int    _SLSysVSupportsFastJob(const char *);
  263. extern int    _SLBsdSupportsFastJob(const char *);
  264. #endif /* _SL_FASTPATH */
  265. extern char*    _SLSysVFindUserName(void);
  266. extern char*    _SLBsdFindUserName(void);
  267. #ifdef __cplusplus
  268. }
  269. #endif
  270.  
  271.  
  272. #endif    /* _SL_SPOOLI_H */
  273.